了解 Oklch&Oklab

#什么是 Oklab/Oklch

#Oklab

一种新的颜色模型,目标是让颜色的亮度、色相、饱和度更符合人眼感知。例如,调整亮度时,颜色不会“变脏”

用亮度(L)+ 两个色度轴(a,b)定义颜色,适合程序员和数学计算

#Oklch

Oklab 的极坐标版本,用 亮度(L)色度(C)色相(H) 三个参数表示颜色,类似 HSL 但更科学

用亮度(L)+ 色度(C)+ 色相(H)定义颜色,适合设计师直观调色

#和 RGBA 的区别

特性RGBAOklab/Oklch
目的屏幕显示视觉均匀性
参数红、绿、蓝、透明度亮度、色度、色相、透明度
调整颜色容易颜色断层平滑自然

#亮度、色度和色相

#亮度(Lightness)

颜色的明暗程度,从纯黑到纯白之间的过渡

在 RGB/HSL 中:亮度调整可能导致颜色失真(例如调高亮度时,红色可能变成粉色)。

在 Oklab/Oklch 中:亮度基于人眼感知,调整时颜色更自然(例如红色调亮时更接近真实的“浅红色”,而非粉色)。

#色度(Chroma)

颜色的鲜艳程度,数值越高越鲜艳,越低越接近灰色

使用 CSS 表示

color: oklch(70% 0.3 120); /* 高色度 -> 鲜艳绿色 🟢 */
color: oklch(70% 0.1 120); /* 低色度 -> 灰绿色 */
color: oklch(70% 0   120); /* 色度 0 -> 灰色 */

#色相(Hue)

颜色的类型,比如红、蓝、绿,就像彩虹🌈的颜色顺序

可以想象为 360° 圆形色环,每个角度对应一种颜色, 红色 -> 120° 蓝色 -> 240° 绿色 -> 360° 红色

使用 CSS 表示

color: oklch(70% 0.2 0); /* 0° = red 🔴 */
color: oklch(70% 0.2 120); /* 120° = blue 🔵 */
color: oklch(70% 0.2 240); /* 240° = green 🟢 */
603 Words